perm filename UPDATE.SAI[4,ALS] blob
sn#059724 filedate 1973-08-28 generic text, type T, neo UTF8
00010 BEGIN "CONVER"
00020 DEFINE ⊂="COMMENT"; ⊂ 8/28/73 Inserts corrected headers in NEWPH format;
00030
00040 REQUIRE "BLOCKS.HDR[4,ALS]" SOURCE_FILE;
00050 INTEGER ARRAY LFILE[0:'177];
00060 INTERNAL INTEGER ARRAY INDATA[0:4000];
00070 INTERNAL INTEGER H,I,J,K,L,M,N,P,NF;
00080 INTERNAL INTEGER FLAG,CFLAG,RFLAG,UPCNT,TABTOT;
00090 INTERNAL INTEGER SEGC,INTOT,SEGTOT,HINT,BPT,PHW,SMOCNT,SMCNT2,ZCNT;
00100 INTEGER SUM,S1,S2,S3,S4,RL;
00110 INTEGER ARRAY N1[0:3];
00120 INTEGER HINCNT,HCOUNT,HINDEX,EOF,EOFA,EOFB,BRK;
00130 INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5,CHAN6,CHANX;
00140 STRING READ1,READ2,READ3,FILEL,FILEI,TFILE,TFILEI,FILLST,PREHINT;
00150 INTEGER ARRAY OLDPH,NEWPH,NEWPHX[0:63];
00160 DEFINE ARRSIZ="4096";
00170 BOOLEAN ER;
00180
00190 STRING PROCEDURE HEADER;
00200 BEGIN "HEADER"
00210 STRING H1; INTEGER I,J,K;
00220 IF HCOUNT>0 THEN BEGIN HCOUNT←HCOUNT-1; HINCNT←HINCNT+1;
00230 RETURN(PREHINT) END ELSE WHILE HCOUNT=0 DO BEGIN "XX"
00240 I←LFILE[HINDEX]; K←LDB(POINT(12,I,23)); J←SEGC-K;
00250 IF I=0 THEN BEGIN PREHINT←"NU"; HCOUNT←999; RETURN(PREHINT) END;
00260 IF J ≥ 0 THEN BEGIN "LATCH"
00270 H1←CVXSTR(LDB(POINT(12,I,11)) LSH 24);
00280 IF H1≠0 THEN BEGIN
00290 PREHINT←H1; HCOUNT←LDB(POINT(12,I,35));
00300 HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; HINCNT←HINCNT+1;
00310 RETURN(PREHINT); DONE END
00320 ELSE BEGIN PREHINT←"NU"; HCOUNT←LDB(POINT(12,I,35));
00330 HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; RETURN(PREHINT); DONE; END;
00340 END "LATCH";
00350 PREHINT←"NU"; RETURN(PREHINT); END "XX";
00360 END "HEADER";
00370
00010 STDBRK(1);
00020 SETBREAK(14,"∃",NULL,"INS");
00022 SETBREAK(15,'11&'12&'14&'15&'40,NULL,"INS");
00025 SETBREAK(16,'56,NULL,"INA");
00030
00060 CHAN1←1; CHAN2←2; CHAN3←3; CHAN4←4; CHAN5←5; CHAN6←6;
00070
00080 WHILE EOFA=0 DO BEGIN "LISTREAD"
00090 HINDEX←21; HCOUNT←HINCNT←0;
00100 FILEI←STRIN("Data file to be corrected ");
00110 IF FILEI="" THEN DONE;
00120
00130 CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,10,0,0,0,EOF);
00140 LOOKUP(CHAN4,FILEI,ER);
00150 WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEI&" File = ");
00160 LOOKUP(CHAN5,FILEI←INCHWL,ER); END; EOFA←0;
00170 ARRYIN(CHAN4,LFILE[0],'200); ⊂ Input header;
00180 SEGTOT←(LFILE[0]*6)%256;
00190 OUTSTR(FILEI&" "&CVS(SEGTOT)&" ");
00200 FOR I←0 STEP 1 UNTIL 127 DO OUTSTR(CVOS(LFILE[I])&TB);
00210 IF RL≠2 THEN RL←RL+1 ELSE BEGIN OUTSTR(CRLF); RL←0; END;
00220 ARRYIN(CHAN4,INDATA[0],SEGTOT*4); CLOSE(CHAN4);
00225
00240 READ2←FILEI; READ1←SCAN(READ2,16,J)&"HD2";
00250 CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
00260 LOOKUP(CHAN4,READ1,ER);
00280 WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&READ1&" File = ");
00290 LOOKUP(CHAN4,READ1←INCHWL,ER); END; EOFA←0;
00295 FILLST←INPUT(CHAN4,14);
00300 CLOSE(CHAN4);
00310
00340 J←21;
00350 FOR I←0 STEP 1 UNTIL 127 DO BEGIN
00360 READ1←SCAN(FILLST,1,K);
00370 OUTSTR(READ1&TB);
00380 L←SCAN(READ1,15,K); DPB(L,POINT(12,LFILE[J],11));
00390 L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(12,LFILE[J],23));
00400 L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(12,LFILE[J],35));
00410 OUTSTR(CVOS(LFILE[J])&CRLF);
00420 J←J+1; END;
00430
00440 READ2←FILEI;
00450 READ1←SCAN(READ2,16,J)&"T02";
00460 OUTSTR("Ready to write "&READ1&TB);
00470 OPEN(CHAN4,"DSK",'10,0,10,0,0,EOF);
00480 ENTER(CHAN4,READ1,0);
00490 ARRYOUT(CHAN4,LFILE[0],'200);
00500 ARRYOUT(CHAN4,INDATA[0],SEGTOT*4); CLOSE(CHAN4);
00510 END "LISTREAD";
00520 RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3); RELEASE(CHAN6);
00530
00540 END "CONVER";